Queremos resolver el siguiente problema: mostrar por pantalla todos los números de 3 cifras tales que la sumas de las centenas y las decenas sean iguales que las unidades. Es decir, 134 cumple la condición porque 1 + 3 es 4. Otro ejemplo es el 336 porque 3 + 3 es 6. Y también cumplen los números 101, 202, 448, 145, 415, etc.
Este problema son como 2 problemas juntos:
Primero haremos un programa que extraiga las centenas, decenas y unidades y compruebe si cumple o no la suma descrita al principio.
Para extraer las centenas de un número, usaremos el truco de Desempaquetar Números, y haremos lo siguiente:
int main() { int N; cin >> N; int c = N / 100; int d = (N / 10) % 10; int u = N % 10; cout << c << ' ' << d << ' ' << u << endl; }
El programa desgrana cada parte y las muestra por separado.
Finalmente, habría que comprobar si las centenas y las decenas suman como las unidades. Ese se puede hacer con un if:
if (c + d == u) { cout << "cumple"; } else { cout << "no cumple"; }
Ahora, con el problema previo resuelto, es cuestión de pasar por todos los número de 3 cifras (del 100 al 999) y mostrar por pantalla solo los que cumplen la propiedad. El bucle que pasa por todos los números de 3 cifras se puede poner así:
for (N = 100; N < 1000; N++) { // el código anterior }
Partimos de 100, y llegamos a 999 porque cuando N es 1000 se sale del bucle. El incremento N++ nos garantiza que pasamos por todos los números consecutivamente.
El programa entero es este (sin los #includes):
int main() { int N, c, d, u; for (N = 100; N < 1000; N++) { c = N / 100; d = (N / 10) % 10; u = N % 10; if (c + d == u) { cout << N << ' '; } } cout << endl; }
Para ahorrar espacio, se muestran los números en una sola línea, ya que así se pueden ver todos en la pantalla a la vez.
En preparación